﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using VisionCloud.Core.Model.Ms;
using VisionCloud.Domain.DtoModel.Ms;

namespace VisionCloud.Domain.Repository.Interface.Ms
{
    public interface IMSTaskPoint2ManualMeasurementRepository : IBaseRepository<MSTaskPoint2ManualMeasurement>
    {
        Task<MSTaskPoint2ManualMeasurement> getModelByTaskAndPoint(Guid pointId, string strType);

        Task<List<MSTaskPoint2ManualMeasurement>> Get(Guid taskId, Guid pointId);

        /// <summary>
        /// 根据任务Id和站点Id获取对应机器和人工测量项
        /// </summary>
        /// <param name="taskId">任务Id</param>
        /// <param name="pointId">站点Id</param>
        /// <returns></returns>
        Task<List<MSManualMeasurement2PointDto>> GetPointMeasureItems(Guid taskId, Guid pointId);

        /// <summary>
        /// 根据任务Id和站点序号获取对应机器和人工测量项
        /// </summary>
        /// <param name="taskId">任务Id</param>
        /// <param name="pointIndex">站点Id</param>
        /// <returns></returns>
        Task<List<MSManualMeasurement2PointDto>> GetPointMeasureItems(Guid taskId, int pointIndex);

        /// <summary>
        /// 根据任务获取对照信息
        /// </summary>
        /// <param name="taskId">任务Id</param>
        /// <returns></returns>
        Task<List<MSTaskPoint2ManualMeasurement>> GetMeasurement2PointDto(Guid taskId);

        /// <summary>
        /// 站点的人工测量项是否录入完毕
        /// </summary>
        /// <param name="pointId">站点Id</param>
        /// <returns></returns>
        Task<bool> IsManualMeasureItemsCompleted(Guid pointId);

        /// <summary>
        /// 录入人工测量项否
        /// </summary>
        /// <param name="taskId">任务Id</param>
        /// <returns></returns>
        Task<bool> HasMeasureItemInputData(Guid taskId);
    }
}